package com.cmc.cloud.cmclink.doc.service.manifest;

import com.cmc.cloud.cmclink.doc.api.document.rep.manifestrep.manifest.*;
import com.cmc.cloud.cmclink.doc.api.document.req.SoManifestReqDto;
import com.cmes.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.List;

/**
 * 舱单 Service 接口
 *
 * @author wdq
 */
public interface ManifestForIbsService {

    /**
     * 创建主舱单所有信息
     * @param createReqVO createReqVO
     * @param userId userId
     * @return Long
     */
    Long createOrUpdateMasterAll(ManifestAllLsbCreateReqVO createReqVO, String userId);

    /**
     * 查询未创建舱单的soId
     * @param csmCode csmCode
     * @return List<SoManifestReqDto>
     */
    List<SoManifestReqDto> queryNotCreateSo(String csmCode);

    /**
     * 创建次舱单所有信息
     * @param  createReqVO createReqVO
     * @param userId userId
     * @return Long
     */
    Long createOrUpdateSlaveAll(ManifestAllLsbCreateReqVO createReqVO, String userId);

    /**
     * 根据订舱号获取舱单详情
     * @param createReqVO createReqVO
     * @return List<ManifestInfoRespVO>
     */
    List<ManifestInfoLbsRespVO> getDetailByBookNo(@Valid ManifestQueryReqVO createReqVO);

    /**
     * 分页获取舱单列表
     * @param pageVO pageVO
     * @return PageResult<ManifestIbsRespVO>
     */
    PageResult<ManifestIbsRespVO> getManifestPage(@Valid ManifestPageReqVO pageVO);
}
